package com.vtuzx.kingdee.xqc_core.service;

import com.vtuzx.core.VtuzxException;
import com.vtuzx.core.bean.dto.VtuzxMap;
import com.vtuzx.kingdee.xqc_core.bean.xqc.BillMaterial;
import com.vtuzx.kingdee.xqc_core.constant.BillEvent;
import com.vtuzx.kingdee.xqc_core.constant.BillType;
import org.bson.Document;
import org.bson.types.ObjectId;

import java.util.Date;
import java.util.List;

public interface IVtuzxCoreInventoryService {

    /**
     * 即时库存出库
     *
     * @param _userId 用户ID
     * @param userName 用户名
     * @param event 单据动作
     * @param billType 单据类型
     * @param stockNo 仓库编码
     * @param billNo 单据号
     * @param boxList 箱号详细
     */
    void reduceInventory(ObjectId _userId, String userName, BillEvent event, BillType billType, String stockNo, String billNo, List<String> boxList, List<VtuzxMap> bcBoxList) throws VtuzxException;


    /**
     * 即时库存出库
     *
     * @param _userId 用户ID
     * @param userName 用户名
     * @param event 单据动作
     * @param billType 单据类型
     * @param stockNo 仓库编码
     * @param billNo 单据号
     * @param boxList 箱号详细
     */
    void reduceInventory(ObjectId _userId, String userName, BillEvent event, BillType billType, String stockNo, String billNo, List<String> boxList, List<VtuzxMap> bcBoxList, List<Document> zsBoxList) throws VtuzxException;

    /**
     * 即时库存入库
     *
     * @param _userId 用户ID
     * @param userName 用户名
     * @param event 单据动作
     * @param billType 单据类型
     * @param stockNo 仓库编码
     * @param billNo 单据号
     * @param billMaterialList 单据物料详细
     */
    void addInventory(ObjectId _userId, String userName, BillEvent event, BillType billType, String stockNo, String billNo, List<BillMaterial> billMaterialList) throws VtuzxException;

}
